/*
 * montage.h
 *
 *  Created on: Aug 1, 2009
 *      Author: zaca
 */

#ifndef MONTAGE_H_
#define MONTAGE_H_


#include <biosignal/montage/channel.h>
#include <biosignal/montage/channeldata.h>

#include <list>
#include <vector>

namespace biosignal {
class BioSignal;

namespace montage {
class Channel;
class Montage {
public:
    Montage(const BioSignal * biosignal);
    virtual ~Montage();
    void addChannel(Channel * channel);
    void delChannel(Channel * channel);
    void delChannel(std::string channel_label);
    const std::list< ChannelType >& channels() const;
    virtual std::vector< ChannelDataType > create_channels_data( const DataFrame* dataframe) const;

protected:
    std::list< ChannelType > m_channels;
    const biosignal::BioSignal * m_biosignal;
};

class ReferentialMontage : public Montage {
public:
    ReferentialMontage(const BioSignal * biosignal);
    virtual ~ReferentialMontage();
};

}
}

#endif /* MONTAGE_H_ */
